Database Tutorials Marshmallow এবং Flask-SQLAlchemy Integration গাইড ও নোট

327

Flask-SQLAlchemy একটি শক্তিশালী ORM (Object-Relational Mapper) যা Flask অ্যাপ্লিকেশনের জন্য ডেটাবেস ম্যানেজমেন্ট সহজ করে তোলে। Marshmallow, অন্যদিকে, একটি লাইব্রেরি যা আপনাকে ডেটা serialization এবং deserialization করতে সাহায্য করে। Flask-SQLAlchemy এবং Marshmallow একত্রে ব্যবহার করে, আপনি আপনার ডেটাবেস মডেলগুলির তথ্য সহজে JSON ফরম্যাটে রূপান্তর করতে পারেন, যা API ডেভেলপমেন্টে অত্যন্ত উপকারী।

এই টিউটোরিয়ালে Flask-SQLAlchemy এবং Marshmallow কীভাবে একত্রে কাজ করে এবং কিভাবে Flask অ্যাপে এই দুটি ব্যবহার করে ডেটা serialize এবং deserialize করা যায়, তা ব্যাখ্যা করা হবে।


প্রয়োজনীয় প্যাকেজসমূহ ইনস্টল করা

প্রথমে আপনাকে Flask, Flask-SQLAlchemy এবং Marshmallow ইনস্টল করতে হবে। এটি করতে নিচের কমান্ডগুলি ব্যবহার করুন:

pip install Flask
pip install Flask-SQLAlchemy
pip install marshmallow

Flask অ্যাপ্লিকেশন তৈরি করা

এখন, Flask অ্যাপ্লিকেশন তৈরি করা যাক যেখানে আমরা Flask-SQLAlchemy এবং Marshmallow ব্যবহার করব।

from flask import Flask, jsonify, request
from flask_sqlalchemy import SQLAlchemy
from marshmallow import Schema, fields

# Flask অ্যাপ্লিকেশন তৈরি করা
app = Flask(__name__)

# ডেটাবেস কনফিগারেশন
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

# Flask-SQLAlchemy ডাটাবেস ইনস্টেন্স তৈরি করা
db = SQLAlchemy(app)

# Marshmallow Schema তৈরির জন্য
class UserSchema(Schema):
    id = fields.Int(dump_only=True)
    name = fields.Str(required=True)
    email = fields.Email(required=True)

# ডেটাবেস মডেল তৈরি করা
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), nullable=False)
    email = db.Column(db.String(100), nullable=False)

    def __init__(self, name, email):
        self.name = name
        self.email = email

# ডেটাবেসে টেবিল তৈরি করা
with app.app_context():
    db.create_all()

# API রুট তৈরি করা
@app.route('/user', methods=['POST'])
def add_user():
    name = request.json['name']
    email = request.json['email']
    
    new_user = User(name=name, email=email)
    
    db.session.add(new_user)
    db.session.commit()
    
    # Marshmallow schema ব্যবহার করে ডেটা serialize করা
    user_schema = UserSchema()
    return user_schema.jsonify(new_user), 201

@app.route('/users', methods=['GET'])
def get_users():
    users = User.query.all()
    
    # Marshmallow schema ব্যবহার করে ডেটা serialize করা
    user_schema = UserSchema(many=True)
    return user_schema.jsonify(users)

if __name__ == '__main__':
    app.run(debug=True)

কোডের ব্যাখ্যা

  1. Flask অ্যাপ্লিকেশন এবং কনফিগারেশন:
    • Flask অ্যাপ্লিকেশন তৈরি করা হয়েছে এবং SQLAlchemy দিয়ে SQLite ডেটাবেস কনফিগার করা হয়েছে।
  2. ডেটাবেস মডেল:
    • User ক্লাসটি Flask-SQLAlchemy দ্বারা মডেল হিসেবে তৈরি করা হয়েছে। এটি id, name, এবং email ফিল্ডসমূহ ধারণ করে।
  3. Marshmallow Schema:
    • UserSchema ক্লাসটি Marshmallow থেকে Schema ক্লাসকে ইনহেরিট করে তৈরি করা হয়েছে। এটি আমাদের মডেল ফিল্ডগুলোকে JSON ফরম্যাটে রূপান্তর করবে।
  4. এন্ডপয়েন্টগুলি:
    • /user (POST) এন্ডপয়েন্ট ব্যবহারকারীর তথ্য গ্রহণ করে ডেটাবেসে যোগ করে এবং Marshmallow দিয়ে সেই ব্যবহারকারীকে JSON ফরম্যাটে রিটার্ন করে।
    • /users (GET) এন্ডপয়েন্ট সকল ব্যবহারকারীকে JSON ফরম্যাটে রিটার্ন করে।

ব্যবহার

নতুন ব্যবহারকারী তৈরি করা (POST)

এখন, আপনি POST মেথড দিয়ে নতুন ব্যবহারকারী যোগ করতে পারবেন:

curl -X POST -H "Content-Type: application/json" -d '{"name": "John Doe", "email": "john.doe@example.com"}' http://127.0.0.1:5000/user

উত্তরে পাবেন:

{
    "id": 1,
    "name": "John Doe",
    "email": "john.doe@example.com"
}

ব্যবহারকারীদের তালিকা দেখানো (GET)

curl http://127.0.0.1:5000/users

উত্তরে পাবেন:

[
    {
        "id": 1,
        "name": "John Doe",
        "email": "john.doe@example.com"
    }
]

সারাংশ

এই টিউটোরিয়ালে আপনি শিখেছেন কিভাবে Flask-SQLAlchemy এবং Marshmallow একসাথে ব্যবহার করে একটি RESTful API তৈরি করতে হয়। Flask-SQLAlchemy আমাদের ডেটাবেস ম্যানেজমেন্ট সহজ করে দেয়, এবং Marshmallow আমাদের ডেটা JSON ফরম্যাটে রূপান্তর করতে সাহায্য করে, যা API ডেভেলপমেন্টে খুবই গুরুত্বপূর্ণ।

Content added By
Promotion

Are you sure to start over?

Loading...